import axios from 'axios'
import { showNotify } from 'vant'
import { getToken, removeToken } from "@/utils/token"
import router from '@/router'


const request = axios.create({
    // 服务基本网址
    baseURL: 'http://124.220.178.79:8199',
    // 超时事件
    timeout: 15000,
})

// 添加请求拦截
request.interceptors.request.use(
    (request) => {
        request.headers.Authorization = `Bearer ${getToken()}`;
        return request
    },
    error => Promise.reject(error))


// 添加响应拦截器
request.interceptors.response.use(
    res => {
        // code是我们和后端约定的业务状态码
        if (res.data.code === 1) {
            // 从相应数据中直接 拿到后端返回值返回
            // 返回成功的结果
            return res.data
        } else {
            // 表示调用失败
            if (res.data.code === 0) {
                showNotify({ type: 'danger', message: res.data.message || "请求异常" })
                if (res.data.message === '请登录') {
                    // 先清除本地的token
                    removeToken();
                    // 再返回登录页面
                    router.replace('/login')
                }
            };
            if (res.data.code === 3) {
                showNotify({ type: 'danger', message: "登录信息有误, 重新登录" })
            }
            return Promise.reject('调用失败')
        }
    },
    error => Promise.reject(error)
)


export default request;